#include "../head/myhead.h"

/**
 * pow
 * 思想：计算x的n次方，先递归计算x的n/2次方,n为正整数
 */
double quickPow(double x, int n){
    if (n == 0 || x == 1)
        return 1.0;
    if (x == 0)
        return 0.0;
    double y = quickPow(x, n/2);
    return n % 2 == 0 ? y * y : y * y * x;
}

/**
 * 数的三次方根
 * 给定一个浮点数n，求它的三次方根。禁止使用cbrt函数。
 * 输入：共一行，包含一个浮点数n。
 * 输出：共一行，包含一个浮点数，表示问题的解。注意，结果保留6位小数。
 * 因为是小数，使用二分时可能陷入死循环中，如果一个a数在[b-eps,b+eps]的区间中时，应当判断a=b，而题目要求保留6位小数，eps取0.00000001精度足够
 */
double radical3ByDivide(){
    double n;
    cin >> n;
    double L = -10000, R = 10000;
    while ((R - L) > 1e-8) {//R - L > 0.00000001,即10的-8次方，既可以确保精度也能保证保留6位小数
		double mid = (R + L) / 2;
		if ( (mid * mid * mid) > n)R = mid;
		else L = mid;
	}
    printf("%.6lf",&L);
}
    
// }
int main()
{
    double ans = quickPow(1.1,2);
    cout << ans << endl;
    return 0;
}